﻿using BO;
using JMI_Nucleo.Classe;
using Microsoft.VisualBasic;
using OR;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace ControleUsuario
{
    public partial class FrmFuncaoSistema : JMI_Nucleo.View.Form_Base.FrmBaseCadastro002
    {
        private mFuncaoSistema _mFuncaoSistema = null;
        private FuncaoSistema funcaoSistema = null;

        public FrmFuncaoSistema()
        {
            InitializeComponent();
        }

        private void FrmFuncaoSistema_Load(object sender, EventArgs e)
        {
            funcaoSistema = new FuncaoSistema();
            CarregaGrade();
            TxtNome.Focus();
        }

        protected override void Incluir()
        {
            base.Incluir();

            _mFuncaoSistema = new mFuncaoSistema();
            _mFuncaoSistema.Indice = 0;

            TxtNome.Focus();
        }

        protected override void Alterar()
        {
            base.Alterar();
            _mFuncaoSistema.DataAlteracao = DateTime.Today;
        }

        protected override void Excluir()
        {
            base.Excluir();
        }

        private void PopulaPropriedade()
        {
            if (Acao == 'A') { _mFuncaoSistema.Indice = Convert.ToInt16(TxtCodigo.Text); }
            _mFuncaoSistema.Nome = TxtNome.Text;
            _mFuncaoSistema.NomeInterno = TxtNomeInterno.Text;
            _mFuncaoSistema.Comentario = TxtComentario.Text;
            _mFuncaoSistema.DataCadastro = dtpDataCadastro.Value;
            _mFuncaoSistema.Ativo = ChkAtivo.Checked;
            _mFuncaoSistema.CodigoEmpresa = Empresa.XMLEmpresa.GetCodigoEmpresa();
            _mFuncaoSistema.Usuario = Usuario.XMLUsuario.GetCodigoUsuario();
        }

        private void PopulaComponente(mFuncaoSistema obj)
        {
            JMIUtil objUtil = new JMIUtil();
            TxtCodigo.Text = obj.Indice.ToString();
            TxtNome.Text = obj.Nome;
            TxtNomeInterno.Text = obj.NomeInterno;
            TxtComentario.Text = obj.Comentario;
            dtpDataCadastro.Value = obj.DataCadastro;
            ChkAtivo.Checked = obj.Ativo;
            TxtDataAlteracao.Text = objUtil.AjustaDataAlteracao(obj.DataAlteracao);
        }

        protected override void Salvar(bool sucesso = true)
        {
            base.Salvar(sucesso);

            TxtStatus.Text = String.Empty;
            TxtStatus.Update();

            TrocaIconeAviso(1);
            PopulaPropriedade();
            sucesso = funcaoSistema.Salvar(_mFuncaoSistema, Acao, _mFuncaoSistema.Indice, _mFuncaoSistema.CodigoEmpresa);
            if (sucesso)
            {
                base.MudaControleRecursivo(this.Controls, 2);
                base.Limpar(this.Controls);
                TxtStatus.Text = "Dados gravados com sucesso ...";
                base.Salvar();
                CarregaGrade();
            }
            else
            {
                if (!String.IsNullOrEmpty(funcaoSistema.MsgErro))
                {
                    TrocaIconeAviso(2);
                    TxtStatus.Text = funcaoSistema.MsgErro;
                }
                base.Salvar(false);
                base.MudaControleRecursivo(this.Controls, 1);
                TxtNome.Focus();
            }
        }

        protected override void Confirmar(bool sucesso = true)
        {
            base.Confirmar(sucesso);

            sucesso = funcaoSistema.Excluir(_mFuncaoSistema.Indice, _mFuncaoSistema.CodigoEmpresa);
            if (sucesso)
            {
                base.MudaControleRecursivo(this.Controls, 2);
                base.Limpar(this.Controls);
                TxtStatus.Text = "Dados excluidos com sucesso ...";
                CarregaGrade();
            }
        }

        private void CarregaGrade()
        {
            dgvPerfil.AutoGenerateColumns = false; 
            List<mFuncaoSistema> lst = funcaoSistema.GetLista(Empresa.XMLEmpresa.GetCodigoEmpresa());
            if (lst != null && lst.Count > 0)
            {
                dgvPerfil.DataSource = lst;
                dgvPerfil.Refresh();
            }
        }

        protected override void Pesquisar()
        {
            base.Pesquisar();

            string retorno = Interaction.InputBox("Informe o código para pesquisa", "Pesquisa por Código");

            if (!String.IsNullOrEmpty(retorno))
            {
                _mFuncaoSistema = funcaoSistema.GetFuncaoSistema(Convert.ToInt32(retorno), Empresa.XMLEmpresa.GetCodigoEmpresa());
                if (_mFuncaoSistema != null)
                {
                    PopulaComponente(_mFuncaoSistema);
                    base.Pesquisar();
                }
            }
        }
    }
}
